37 research outputs found
The Semantics of Graph Programs
GP (for Graph Programs) is a rule-based, nondeterministic programming
language for solving graph problems at a high level of abstraction, freeing
programmers from handling low-level data structures. The core of GP consists of
four constructs: single-step application of a set of conditional
graph-transformation rules, sequential composition, branching and iteration. We
present a formal semantics for GP in the style of structural operational
semantics. A special feature of our semantics is the use of finitely failing
programs to define GP's powerful branching and iteration commands
An Implementation of Nested Pattern Matching in Interaction Nets
Reduction rules in interaction nets are constrained to pattern match exactly
one argument at a time. Consequently, a programmer has to introduce auxiliary
rules to perform more sophisticated matches. In this paper, we describe the
design and implementation of a system for interaction nets which allows nested
pattern matching on interaction rules. We achieve a system that provides
convenient ways to express interaction net programs without defining auxiliary
rules
Agraphs: Definition, implementation and tools
Agraphs are a graph-based language representation, transformation
and exchange format. In the same vein as XML, Agraphs form a
general data representation mechanism that needs to be instantiated
in different specific applications. In this paper, we present the
Agraphs data structure, programming interface and related tools,
identify their main features with respect to exchange format
characteristics, and compare them to other existing exchange
formats. These different features are illustrated on an instance of
Agraphs for modular Petri nets
Verified Compilation and the B Method: A Proposal and a First Appraisal
AbstractThis paper investigates the application of the B method beyond the classical algorithmic level provided by the B0 sub-language, and presents refinements of B models at a level of precision equivalent to assembly language. We claim and justify that this extension provides a more reliable software development process as it bypasses two of the less trustable steps in the application of the B method: code synthesis and compilation. The results presented in the paper have a value as a proof of concept and may be used as a basis to establish an agenda for the development of an approach to build verifying compilers [Hoare, C. A. R., The verifying compiler, a grand challenge for computing research, in: VMCAI, 2005, pp. 78–78] based on the B method
JCML: A specification language for the runtime verification of Java Card programs
AbstractJava Card is a version of Java developed to run on devices with severe storage and processing restrictions. The applets that run on these devices are frequently intended for use in critical, highly distributed, mobile conditions. They are required to be portable and safe. Often, the requirements of the application impose the use of dynamic, on-card verifications, but most of the research developed to improve the safety of Java Card applets concentrates on static verification methods. This work presents a runtime verification approach based on Design by Contract to improve the safety of Java Card applications. To this end, we propose JCML (Java Card Modelling Language) a specification language derived from JML (Java Modelling Language) and its implementation: a compiler that generates runtime verification code. We also present some experiments and quality indicators. This paper extends previous published work from the authors with a more complete and precise definition of the JCML language and new experiments and results
Verifying Temporal Regular Properties of Abstractions of Term Rewriting Systems
The tree automaton completion is an algorithm used for proving safety
properties of systems that can be modeled by a term rewriting system. This
representation and verification technique works well for proving properties of
infinite systems like cryptographic protocols or more recently on Java Bytecode
programs. This algorithm computes a tree automaton which represents a (regular)
over approximation of the set of reachable terms by rewriting initial terms.
This approach is limited by the lack of information about rewriting relation
between terms. Actually, terms in relation by rewriting are in the same
equivalence class: there are recognized by the same state in the tree
automaton.
Our objective is to produce an automaton embedding an abstraction of the
rewriting relation sufficient to prove temporal properties of the term
rewriting system.
We propose to extend the algorithm to produce an automaton having more
equivalence classes to distinguish a term or a subterm from its successors
w.r.t. rewriting. While ground transitions are used to recognize equivalence
classes of terms, epsilon-transitions represent the rewriting relation between
terms. From the completed automaton, it is possible to automatically build a
Kripke structure abstracting the rewriting sequence. States of the Kripke
structure are states of the tree automaton and the transition relation is given
by the set of epsilon-transitions. States of the Kripke structure are labelled
by the set of terms recognized using ground transitions. On this Kripke
structure, we define the Regular Linear Temporal Logic (R-LTL) for expressing
properties. Such properties can then be checked using standard model checking
algorithms. The only difference between LTL and R-LTL is that predicates are
replaced by regular sets of acceptable terms
An Improved Algorithm for Generating Database Transactions from Relational Algebra Specifications
Alloy is a lightweight modeling formalism based on relational algebra. In
prior work with Fisler, Giannakopoulos, Krishnamurthi, and Yoo, we have
presented a tool, Alchemy, that compiles Alloy specifications into
implementations that execute against persistent databases. The foundation of
Alchemy is an algorithm for rewriting relational algebra formulas into code for
database transactions. In this paper we report on recent progress in improving
the robustness and efficiency of this transformation
Graph Creation, Visualisation and Transformation
We describe a tool to create, edit, visualise and compute with interaction
nets - a form of graph rewriting systems. The editor, called GraphPaper, allows
users to create and edit graphs and their transformation rules using an
intuitive user interface. The editor uses the functionalities of the TULIP
system, which gives us access to a wealth of visualisation algorithms.
Interaction nets are not only a formalism for the specification of graphs, but
also a rewrite-based computation model. We discuss graph rewriting strategies
and a language to express them in order to perform strategic interaction net
rewriting
Modeling and Reasoning over Distributed Systems using Aspect-Oriented Graph Grammars
Aspect-orientation is a relatively new paradigm that introduces abstractions
to modularize the implementation of system-wide policies. It is based on a
composition operation, called aspect weaving, that implicitly modifies a base
system by performing related changes within the system modules. Aspect-oriented
graph grammars (AOGG) extend the classic graph grammar formalism by defining
aspects as sets of rule-based modifications over a base graph grammar. Despite
the advantages of aspect-oriented concepts regarding modularity, the implicit
nature of the aspect weaving operation may also introduce issues when reasoning
about the system behavior. Since in AOGGs aspect weaving is characterized by
means of rule-based rewriting, we can overcome these problems by using known
analysis techniques from the graph transformation literature to study aspect
composition. In this paper, we present a case study of a distributed
client-server system with global policies, modeled as an aspect-oriented graph
grammar, and discuss how to use the AGG tool to identify potential conflicts in
aspect weaving
Object-oriented Programming Laws for Annotated Java Programs
Object-oriented programming laws have been proposed in the context of
languages that are not combined with a behavioral interface specification
language (BISL). The strong dependence between source-code and interface
specifications may cause a number of difficulties when transforming programs.
In this paper we introduce a set of programming laws for object-oriented
languages like Java combined with the Java Modeling Language (JML). The set of
laws deals with object-oriented features taking into account their
specifications. Some laws deal only with features of the specification
language. These laws constitute a set of small transformations for the
development of more elaborate ones like refactorings